昨天使用 Switch Node,把 AI 的分類結果分成:
urgent
question
suggestion
接著讓不同類型的資料進入不同的處理流程。
不過在測試的時候,我發現一個 AI 自動化很容易遇到的問題:
我明明叫 AI 只回答 urgent,它為什麼還是可能多講一堆?
例如我們希望得到:
urgent
AI 卻可能回答:
This message is classified as urgent.
對人來說意思完全一樣,但對 Switch Node 來說:
urgent
和
This message is classified as urgent.
是兩個不同的字串。
所以今天要解決的問題就是:
如何讓 AI 的輸出更固定,讓後面的 Node 可以穩定使用?
平常使用 ChatGPT 時,我通常希望回答越完整越好。
但在自動化 Workflow 裡,情況有點不一樣。
假設 Switch Node 的規則設定:
AI Output = urgent
那前面的 AI 最好就真的輸出:
urgent
而不是:
這是一個 urgent 的問題。
不然原本設計好的自動化流程就可能無法正確分流。
所以今天我開始理解:
在 AI 自動化中,不只要在意 AI 回答得對不對,還要在意回答的「格式」對不對。
假設 Prompt 只寫:
請幫我判斷以下內容屬於哪種類型:
{{ $json.text }}
類型有 urgent、question、suggestion。
這個 Prompt 人類看起來沒有什麼問題。
但 AI 可能回答:
這段內容屬於 urgent,因為使用者表示系統目前完全無法使用。
甚至可能回答:
分類結果:urgent
分類其實都是正確的,但這些結果對後面的 Switch Node 不一定好處理。

圖 1 沒有嚴格限制格式時的 AI 輸出
接著修改 Prompt。
這次除了告訴 AI「要做什麼」,也明確告訴它:
「要怎麼回答。」
例如:
你是一個文字分類器。
請將使用者輸入分類成以下其中一種類別:
urgent:需要立即處理的嚴重問題
question:一般問題或操作詢問
suggestion:功能建議或改善意見
規則:
1. 只能選擇一個類別。
2. 只能回答 urgent、question 或 suggestion。
3. 不要提供原因。
4. 不要加入標點符號或其他文字。
使用者輸入:
{{ $json.text }}
這次 AI 的任務就清楚很多。
希望最後只得到:
urgent

圖 2 增加輸出規則後的 Prompt
除了直接寫規則,也可以在 Prompt 裡提供一些例子。
例如:
範例:
輸入:系統完全無法登入
輸出:urgent
輸入:請問密碼要去哪裡修改?
輸出:question
輸入:希望增加深色模式
輸出:suggestion
然後再放真正要分類的資料:
現在請分類:
{{ $json.text }}
這種方式的好處是,除了用文字描述規則之外,也直接讓 AI 看到:
「我要的答案長這樣。」
例如:
輸入:網站一直出現錯誤,現在完全不能使用!
輸出:urgent
而不是輸出一整段解釋。
Prompt 修改完成後,不能只測試一次。
所以今天可以準備幾種不同的內容。
| 測試內容預期輸出 | |
|---|---|
| 系統完全無法登入,請立即處理 | urgent |
| 請問要怎麼修改密碼? | question |

| 希望可以增加深色模式 | suggestion |

| APP 一直閃退,完全不能使用 | urgent |

| 可以增加搜尋功能嗎? | suggestion |

每一筆都送進 Workflow,看看 AI 能不能只回傳指定的三個結果。
這一步讓我發現,Prompt 不能只測試「最簡單的例子」。
如果真的要放進自動化流程,最好用不同寫法多測幾次。
前面的方法還是讓 AI 回傳一個單字。
但如果未來希望 AI 一次產生很多資料,例如:
分類
摘要
是否需要通知
如果全部混在一段文字裡,後面的 Node 又會變得不好處理。
這時候就可以要求 AI 使用 JSON。
例如希望得到:
{
"category": "urgent",
"summary": "使用者目前無法登入系統",
"notify": true
}
這樣就跟 Day 8 學過的 JSON 接起來了。
我們可以很清楚知道:
category → urgent
summary → 使用者目前無法登入系統
notify → true
接下來不同 Node 就可以使用自己需要的欄位。
除了直接在 Prompt 裡寫「請輸出 JSON」,在支援結構化輸出的 AI 流程中,也可以進一步限制輸出的資料結構。
這就是今天另外認識的一個概念:
Structured Output(結構化輸出)
簡單來說,就是希望 AI 不要自由發揮輸出格式,而是按照我們指定的資料結構產生結果。
例如我們希望每次都有:
{
"category": "",
"summary": "",
"notify": false
}
其中:
category 只能是:
urgent
question
suggestion
summary 放簡短摘要。
notify 則使用:
true / false
這樣後面的 Workflow 就更容易使用這些資料。

圖 3 設定 AI 的結構化輸出格式
如果目前使用的 Node 沒有這個選項也沒關係,今天先用 Prompt 要求 JSON 格式,一樣可以理解這個概念。
昨天 Switch Node 是直接判斷 AI 回傳的整段文字。
如果今天 AI 回傳:
{
"category": "urgent",
"summary": "系統目前完全無法登入",
"notify": true
}
那 Switch Node 就不需要處理整段內容。
只需要讀取:
category
然後判斷:
category = urgent
category = question
category = suggestion
整個流程就變成:
Webhook
↓
AI
↓
Structured Output
↓
category
↓
Switch
↙ ↓ ↘
urgent question suggestion

圖 4 使用固定 AI 輸出進行 Switch 分流
做到今天,我也發現不是把 Prompt 寫得很長就一定比較好。
真正重要的是:
任務清楚、分類規則清楚、輸出格式清楚。
例如我們真正需要的只有:
urgent
question
suggestion
就沒有必要叫 AI 寫一大段分析。
因為對 Workflow 來說:
穩定、可預測的輸出,有時候比漂亮的回答更重要。
這跟平常直接跟 ChatGPT 聊天的使用方式真的不太一樣。
即使 Prompt 寫得很清楚,AI 還是不能保證所有內容都一定判斷正確。
例如:
「系統有點慢,我等等就要交作業了。」
這句話到底是 urgent 還是 question?
其實就沒有前面的例子那麼明確。
所以除了限制輸出格式之外,分類標準本身也要定義清楚。
也就是說:
格式穩定 ≠ 判斷一定正確
這兩件事情要分開看。
今天沒有增加很多新的 Node,反而回頭改善前面 AI 的輸出方式。
從原本可能得到:
我認為這是一個 urgent 的問題,因為……
慢慢改成:
urgent
甚至進一步變成:
{
"category": "urgent",
"summary": "系統目前無法登入",
"notify": true
}
這讓我發現,建立 AI Workflow 不只是「把 AI 接進去」而已。
還需要考慮:
AI 的結果能不能穩定地交給下一個 Node 使用?
到目前為止,我們已經可以接收資料、讓 AI 分類、Switch 分流、寄 Email、儲存 Google Sheets。
下一步就可以把這些功能組合起來,做一個比較完整的小作品。